Java 静态代码块与构造方法的执行顺序(子类与父类)

您所在的位置:网站首页 java static静态代码块 Java 静态代码块与构造方法的执行顺序(子类与父类)

Java 静态代码块与构造方法的执行顺序(子类与父类)

#Java 静态代码块与构造方法的执行顺序(子类与父类)| 来源: 网络整理| 查看: 265

Java 静态代码块与构造方法的执行顺序(子类与父类) 原创

CSDN深海呐 2023-03-10 21:52:36 博主文章分类:Java ©著作权

文章标签 静态代码块和构造方法的执行顺序 静态代码块与构造方法的执行顺序 静态代码块 Java 执行顺序 Java代码块和方法的执行顺序 文章分类 深度学习 人工智能

©著作权归作者所有:来自51CTO博客作者CSDN深海呐的原创作品,请联系作者获取转载授权,否则将追究法律责任

最新整理代码的时候,发现好几年前的一个小测试单元,一起看一下吧

public class Text { public static void main(String[] args) { new AA(); } static class AA extends BB { static { System.out.println("1"); } public AA() { System.out.println("2"); } } static class BB { static { System.out.println("3"); } public BB() { System.out.println("4"); } }

AA继承了父类BB,然后各自有自己的静态代码块,各自的构造方法,分别执行各自的打印

你们猜最后的执行顺序是什么?  哈哈 一起看一下执行结果吧!

3 1 4 2

怎么样 ?惊喜不惊喜!意外不意外!   

结果是:静态代码块(父)→静态代码块(子)→构造方法(父)→构造方法(子)

其实你仔细想一下就明白这个顺序的道理了

深海个人认为: 系统设计这个顺序的原因有二: 

第一,静态代码块的执行,有点像静态属性,它本身可能作为其他方法的影响资源,所以在其他方法执行前,

必须要先执行其资源影响,这就好比古时候打仗一样,兵马未动,粮草先行。哈哈这个比喻不错吧。

第二,父类的静态代码块与方法优先级高于子类,这个是因为父类的初始化会有可能影响子类的逻辑,

并且它有可能是一对多的影响关系,所以父类会优先执行。

 

收藏 评论 分享 举报

上一篇:算法探索_两数之和

下一篇:Android AlertDialog 抢焦点的问题



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3